El blog de Shackra

Catolicismo Emacs Software libre

“No seas tan abierto de mente o tu cerebro se caerá” ~G.K. Chesterton

Agregando correctamente "backends" a 'company-backends

Hace un par de días estaba realizando unas mejoras en mi configuración de Emacs y decidí que cualquier cambio en la variable company-backends sería en una copia buffer local, lo cual resultaría en una variable global limpia de backends que no sirven para nada en otros modos mayores.

El primer paso fue obviamente establecer los valores por default de la variable company-backends conteniendo sólo aquellos backends que fueran de utilidad sin importar en qué modo mayor estuviera editando texto.

(setf company-backends '((company-files
                          company-keywords
                          company-capf
                          company-yasnippet)
                         (company-abbrev company-dabbrev))) ;; Nunca he usado Abbrev

Ahora, cuando este hackeando mi configuración integrando algún modo mayor nuevo o mejorando los ya integrados a Emacs, y si el modo mayor ofrece auto-completado por medio de company-mode ese backend se agregaran a una copia buffer local de la variable company-backends.

;; Para `python-mode'
(add-hook 'python-mode-hook (lambda () (add-to-list (make-local-variable 'company-backends) 'company-anaconda)))
;; Para `go-mode'
(add-hook 'go-mode-hook (lambda () (add-to-list (make-local-variable 'company-backends) 'company-go)))
;; para `js2-mode' y `inferior-js-mode-hook' (JavaScript)
(dolist (hook '(js2-mode-hook
                inferior-js-mode-hook))
  (add-hook hook (lambda ()
                   (add-to-list (make-local-variable 'company-backends) 'company-tern))))

¿Existe alguna mejora en rendimiento perceptible con company-mode menos abarrotada de backends?

No tengo ni la menor idea.

/